package cn.mw.cmdb.template.param;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import java.util.List;
import java.util.Map;

/**
 * @description 监控项参数
 */
@Getter
@Setter
@Schema(name = "MonitorItemParam", description = "监控项参数")
public class MonitorItemParam {

    @Schema(description = "监控项ID")
    private String itemid;
    @Schema(description = "监控项名称")
    private String name;
    @Schema(description = "监控项键值")
    private String key_;
    @Schema(description = "监控项类型")
    private String type;
    @Schema(description = "监控项数值类型")
    private String value_type;
    @Schema(description = "监控项单位")
    private String units;
    @Schema(description = "监控项间隔")
    private String delay;
    @Schema(description = "主机或模板ID")
    private String hostid;
    @Schema(description = "历史数据存储")
    private String history;
    @Schema(description = "趋势数据存储")
    private String trends;
    @Schema(description = "映射值ID")
    private String valuemapid;
    @Schema(description = "主机资产栏位")
    private String inventory_link;
    @Schema(description = "描述")
    private String description;
    @Schema(description = "状态")
    private String status;
    @Schema(description = "SSH代理认证方式，SSH代理认证方法可能的值：0 - (default) 密码;1 - 公钥。HTTP代理认证方法可能的值：0 - (default) 无1 - 基本2 - NTLM  3 - Kerberos ")
    private String authtype;
    @Schema(description = "用户名")
    private String uesrname;
    @Schema(description = "密码")
    private String password;
    @Schema(description = "SNMP OID")
    private String snmp_oid;
    @Schema(description = "监控项类型的附加参数")
    private String params;
    @Schema(description = "应用集")
    private List<String> applications;
    @Schema(description = "标记")
    private List<Map> tags;
    @Schema(description = "预处理")
    private List<PreprocessingParam> preprocessing;

    @Schema(description = "所属规则ID")
    private String ruleid;

    @Schema(description = "发现状态")
    private String discover;


    @Schema(description = "HTTP代理监控类型时需要")
    private String url;
    @Schema(description = "HTTP代理监控查询参数")
    private List<Map> query_fields;
    @Schema(description = "HTTP代理监控查询参数")
    private String request_method;
    @Schema(description = "超时时间")
    private String timeout;
    @Schema(description = "请求数据类型")
    private String post_type;
    @Schema(description = "请求正文数据")
    private String posts;
    @Schema(description = "请求头部对象")
    private List<Map> headers;
    @Schema(description = "状态码")
    private String status_codes;
    @Schema(description = "跟随跳转")
    private String follow_redirects;
    @Schema(description = "检索模式")
    private String retrieve_mode;
    @Schema(description = "转到JSON")
    private String output_format;
    @Schema(description = "HTTP代理监控项字段。HTTP(S)代理连接字符串。")
    private String http_proxy;
    @Schema(description = " HTTP代理监控项字段。是否验证主机的证书是否真实。0 - (default) 不验证。1 - 验证。")
    private String verify_peer;
    @Schema(description = "HTTP代理监控项字段。是否验证连接的主机名是否与主机证书中的名称匹配。0 - (default) 不验证。1 - 验证。")
    private String verify_host;
    @Schema(description = "HTTP代理监控项字段。公共SSL密钥文件路径。SSL证书文件")
    private String ssl_cert_file;
    @Schema(description = "HTTP代理监控项字段。私有SSL密钥文件路径。SSL密钥文件")
    private String ssl_key_file;
    @Schema(description = "HTTP代理监控项字段。SSL密钥文件的密码。SSL密钥密码")
    private String ssl_key_password;


    @Schema(description = "IPMI传感器，IPMI监控类型调用")
    private String ipmi_sensor;

    @Schema(description = "是否启用trapping")
    private String allow_traps;

    @Schema(description = "JMX代理自定义连接字符串。默认值：service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi")
    private String jmx_endpoint;
    @Schema(description = "主监控项ID")
    private String master_itemid;
    @Schema(description = "脚本监控项的附加参数。具有'name'和'value'属性的对象数组，其中名称必须是唯一的。")
    private List<Map> parameters;

}
